package com.utn.disenio.entrega1;

import static org.junit.Assert.*;

import java.util.Calendar;

import org.junit.Test;

import com.utn.disenio.entrega1.Iso;
import com.utn.disenio.entrega1.Latino;
import com.utn.disenio.entrega1.Norteamericano;

 
public class FechaTester {

	@Test
	public void testIso() throws Exception {
		
		Iso iso= new Iso("1991-01-15");
		
		assertEquals(iso.getFecha().get(Calendar.YEAR),1991);
		assertEquals(iso.getFecha().get(Calendar.MONTH)+1,01);
		assertEquals(iso.getFecha().get(Calendar.DAY_OF_MONTH),15);
		
	}
	
	
	@Test
	public void testLatino() throws Exception {

		Latino latino = new Latino("25/02/1991");

		assertEquals(latino.getFecha().get(Calendar.YEAR),1991);
		assertEquals(latino.getFecha().get(Calendar.MONTH)+1,02);
		assertEquals(latino.getFecha().get(Calendar.DAY_OF_MONTH),25);
	}
	
	
	@Test
	public void testAmerica() throws Exception {
		
		Norteamericano norteamericano = new Norteamericano("04-16-2003");

		assertEquals(norteamericano.getFecha().get(Calendar.YEAR),2003);
		assertEquals(norteamericano.getFecha().get(Calendar.MONTH)+1,04);
		assertEquals(norteamericano.getFecha().get(Calendar.DAY_OF_MONTH),16);
		
	} 
	
	
	@Test
	public void testMayor() throws Exception{
		
		Latino latino = new Latino("25/02/1991");
		Iso iso= new Iso("1991-01-15");
		
		boolean result = latino.esMayorA(iso);
		assertTrue(result);
		
		boolean result2 = iso.esMayorA(latino);
		assertFalse(result2);
		
	}
	
	@Test
	public void difDias() throws Exception {
		
		Latino latino = new Latino("25/02/1991");
		Iso iso= new Iso("1991-01-15");
		
		int result = latino.tuDiferenciaCon(iso);
		assertEquals(result,41);
	}
	
	@Test
	public void testFlexL() throws Exception{
		
		Flexible flexL = new Flexible("17/07/1998");
		
		assertEquals(flexL.getFecha().get(Calendar.YEAR),1998);
		assertEquals(flexL.getFecha().get(Calendar.MONTH)+1,07);
		assertEquals(flexL.getFecha().get(Calendar.DAY_OF_MONTH),17);
	}
	
	@Test
	public void testFlexA() throws Exception{
		
		Flexible flexA = new Flexible("06-20-2005");
		
		
		assertEquals(flexA.getFecha().get(Calendar.YEAR),2005);
		assertEquals(flexA.getFecha().get(Calendar.MONTH)+1,06);
		assertEquals(flexA.getFecha().get(Calendar.DAY_OF_MONTH),20);
	}
	
	@Test
	public void testFlexI() throws Exception{
		
		Flexible flexI = new Flexible("1999-01-28");		
		
		assertEquals(flexI.getFecha().get(Calendar.YEAR),1999);
		assertEquals(flexI.getFecha().get(Calendar.MONTH)+1,01);
		assertEquals(flexI.getFecha().get(Calendar.DAY_OF_MONTH),28);
	}
	
	@Test(expected = FechaInvalidaException.class)
	public void testException() throws Exception{
		Flexible flexE = new Flexible("hola");
	}
	
	@Test(expected = FechaInvalidaException.class)
	public void testException2() throws Exception{
		Iso IsoE = new Iso("25/03/1992");
	}
	
}



